{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Package"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "import matplotlib.pyplot as plt\n",
    "from tqdm import tqdm\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.metrics import precision_score, recall_score, f1_score\n",
    "\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.optim as optim\n",
    "import torchvision.transforms as transforms\n",
    "from torchvision.datasets import MNIST\n",
    "from torch.utils.data import DataLoader\n",
    "\n",
    "from architectures_28x28.CKAN_BN import CKAN_BN\n",
    "from architectures_28x28.SimpleModels import *\n",
    "from architectures_28x28.ConvNet import ConvNet\n",
    "from architectures_28x28.KANConvs_MLP import KANC_MLP\n",
    "from architectures_28x28.KKAN import KKAN_Convolutional_Network\n",
    "from architectures_28x28.conv_and_kan import NormalConvsKAN\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz\n",
      "Failed to download (trying next):\n",
      "HTTP Error 403: Forbidden\n",
      "\n",
      "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/train-images-idx3-ubyte.gz\n",
      "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/train-images-idx3-ubyte.gz to ./data/MNIST/raw/train-images-idx3-ubyte.gz\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 9912422/9912422 [00:02<00:00, 3949867.73it/s] \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./data/MNIST/raw/train-images-idx3-ubyte.gz to ./data/MNIST/raw\n",
      "\n",
      "Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz\n",
      "Failed to download (trying next):\n",
      "HTTP Error 403: Forbidden\n",
      "\n",
      "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/train-labels-idx1-ubyte.gz\n",
      "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/train-labels-idx1-ubyte.gz to ./data/MNIST/raw/train-labels-idx1-ubyte.gz\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 28881/28881 [00:00<00:00, 192769.06it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./data/MNIST/raw/train-labels-idx1-ubyte.gz to ./data/MNIST/raw\n",
      "\n",
      "Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz\n",
      "Failed to download (trying next):\n",
      "HTTP Error 403: Forbidden\n",
      "\n",
      "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/t10k-images-idx3-ubyte.gz\n",
      "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/t10k-images-idx3-ubyte.gz to ./data/MNIST/raw/t10k-images-idx3-ubyte.gz\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 1648877/1648877 [00:00<00:00, 1782419.13it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./data/MNIST/raw/t10k-images-idx3-ubyte.gz to ./data/MNIST/raw\n",
      "\n",
      "Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz\n",
      "Failed to download (trying next):\n",
      "HTTP Error 403: Forbidden\n",
      "\n",
      "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/t10k-labels-idx1-ubyte.gz\n",
      "Downloading https://ossci-datasets.s3.amazonaws.com/mnist/t10k-labels-idx1-ubyte.gz to ./data/MNIST/raw/t10k-labels-idx1-ubyte.gz\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 4542/4542 [00:00<00:00, 2098075.86it/s]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./data/MNIST/raw/t10k-labels-idx1-ubyte.gz to ./data/MNIST/raw\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "# Transformaciones\n",
    "transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])\n",
    "\n",
    "# Cargar MNIST y filtrar por dos clases\n",
    "mnist_train = MNIST(root='./data', train=True, download=True, transform=transform)\n",
    "\n",
    "mnist_test = MNIST(root='./data', train=False, download=True, transform=transform)\n",
    "\n",
    "# DataLoader\n",
    "train_loader = DataLoader(mnist_train, batch_size=64, shuffle=True)\n",
    "test_loader = DataLoader(mnist_test, batch_size=64, shuffle=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train & Test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train(model, device, train_loader, optimizer, epoch, criterion):\n",
    "    \"\"\"\n",
    "    Train the model for one epoch\n",
    "\n",
    "    Args:\n",
    "        model: the neural network model\n",
    "        device: cuda or cpu\n",
    "        train_loader: DataLoader for training data\n",
    "        optimizer: the optimizer to use (e.g. SGD)\n",
    "        epoch: the current epoch\n",
    "        criterion: the loss function (e.g. CrossEntropy)\n",
    "\n",
    "    Returns:\n",
    "        avg_loss: the average loss over the training set\n",
    "    \"\"\"\n",
    "\n",
    "    model.to(device)\n",
    "    model.train()\n",
    "    train_loss = 0\n",
    "    # Process the images in batches\n",
    "    for batch_idx, (data, target) in enumerate(tqdm(train_loader)):\n",
    "        # Recall that GPU is optimized for the operations we are dealing with\n",
    "        data, target = data.to(device), target.to(device)\n",
    "        \n",
    "        # Reset the optimizer\n",
    "        optimizer.zero_grad()\n",
    "        \n",
    "        # Push the data forward through the model layers\n",
    "        output = model(data)\n",
    "        \n",
    "        # Get the loss\n",
    "        loss = criterion(output, target)\n",
    "\n",
    "        # Keep a running total\n",
    "        train_loss += loss.item()\n",
    "        \n",
    "        # Backpropagate\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        \n",
    "    # return average loss for the epoch\n",
    "    avg_loss = train_loss / (batch_idx+1)\n",
    "    # print('Training set: Average loss: {:.6f}'.format(avg_loss))\n",
    "    return avg_loss\n",
    "\n",
    "def test(model, device, test_loader, criterion):\n",
    "    \"\"\"\n",
    "    Test the model\n",
    "\n",
    "    Args:\n",
    "        model: the neural network model\n",
    "        device: cuda or cpu\n",
    "        test_loader: DataLoader for test data\n",
    "        criterion: the loss function (e.g. CrossEntropy)\n",
    "\n",
    "    Returns:\n",
    "        test_loss: the average loss over the test set\n",
    "        accuracy: the accuracy of the model on the test set\n",
    "        precision: the precision of the model on the test set\n",
    "        recall: the recall of the model on the test set\n",
    "        f1: the f1 score of the model on the test set\n",
    "    \"\"\"\n",
    "\n",
    "    model.eval()\n",
    "    test_loss = 0\n",
    "    correct = 0\n",
    "    all_targets = []\n",
    "    all_predictions = []\n",
    "    \n",
    "    with torch.no_grad():\n",
    "        for data, target in test_loader:\n",
    "            data, target = data.to(device), target.to(device)\n",
    "            \n",
    "            # Get the predicted classes for this batch\n",
    "            output = model(data)\n",
    "            \n",
    "            # Calculate the loss for this batch\n",
    "            test_loss += criterion(output, target).item()\n",
    "            \n",
    "            # Calculate the accuracy for this batch\n",
    "            _, predicted = torch.max(output.data, 1)\n",
    "            correct += (target == predicted).sum().item()\n",
    "\n",
    "            # Collect all targets and predictions for metric calculations\n",
    "            all_targets.extend(target.view_as(predicted).cpu().numpy())\n",
    "            all_predictions.extend(predicted.cpu().numpy())\n",
    "\n",
    "    # Calculate overall metrics\n",
    "    precision = precision_score(all_targets, all_predictions, average='macro')\n",
    "    recall = recall_score(all_targets, all_predictions, average='macro')\n",
    "    f1 = f1_score(all_targets, all_predictions, average='macro')\n",
    "\n",
    "    # Normalize test loss\n",
    "    test_loss /= len(test_loader.dataset)\n",
    "    accuracy = correct / len(test_loader.dataset)\n",
    "\n",
    "    # print('\\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%), Precision: {:.2f}, Recall: {:.2f}, F1 Score: {:.2f}\\n'.format(\n",
    "    #     test_loss, correct, len(test_loader.dataset), accuracy, precision, recall, f1))\n",
    "\n",
    "    return test_loss, accuracy, precision, recall, f1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train_and_test_models(model, device, train_loader, test_loader, optimizer, criterion, epochs, scheduler):\n",
    "    \"\"\"\n",
    "    Train and test the model\n",
    "\n",
    "    Args:\n",
    "        model: the neural network model\n",
    "        device: cuda or cpu\n",
    "        train_loader: DataLoader for training data\n",
    "        test_loader: DataLoader for test data\n",
    "        optimizer: the optimizer to use (e.g. SGD)\n",
    "        criterion: the loss function (e.g. CrossEntropy)\n",
    "        epochs: the number of epochs to train\n",
    "        scheduler: the learning rate scheduler\n",
    "\n",
    "    Returns:\n",
    "        all_train_loss: a list of the average training loss for each epoch\n",
    "        all_test_loss: a list of the average test loss for each epoch\n",
    "        all_test_accuracy: a list of the accuracy for each epoch\n",
    "        all_test_precision: a list of the precision for each epoch\n",
    "        all_test_recall: a list of the recall for each epoch\n",
    "        all_test_f1: a list of the f1 score for each epoch\n",
    "    \"\"\"\n",
    "    # Track metrics\n",
    "    all_train_loss = []\n",
    "    all_test_loss = []\n",
    "    all_test_accuracy = []\n",
    "    all_test_precision = []\n",
    "    all_test_recall = []\n",
    "    all_test_f1 = []\n",
    "    \n",
    "    for epoch in range(1, epochs + 1):\n",
    "        # Train the model\n",
    "        train_loss = train(model, device, train_loader, optimizer, epoch, criterion)\n",
    "        all_train_loss.append(train_loss)\n",
    "        \n",
    "        # Test the model\n",
    "        test_loss, test_accuracy, test_precision, test_recall, test_f1 = test(model, device, test_loader, criterion)\n",
    "        all_test_loss.append(test_loss)\n",
    "        all_test_accuracy.append(test_accuracy)\n",
    "        all_test_precision.append(test_precision)\n",
    "        all_test_recall.append(test_recall)\n",
    "        all_test_f1.append(test_f1)\n",
    "\n",
    "        print(f'End of Epoch {epoch}: Train Loss: {train_loss:.6f}, Test Loss: {test_loss:.4f}, Accuracy: {test_accuracy:.2%}')\n",
    "        scheduler.step()\n",
    "    model.all_test_accuracy = all_test_accuracy\n",
    "    model.all_test_precision = all_test_precision\n",
    "    model.all_test_f1 = all_test_f1\n",
    "    model.all_test_recall = all_test_recall\n",
    "\n",
    "    return all_train_loss, all_test_loss, all_test_accuracy, all_test_precision, all_test_recall, all_test_f1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Set Device"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Common Models:\n",
    "- SimpleCNN\n",
    "- SimpleLinear\n",
    "- ConvNet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  0%|          | 0/938 [00:00<?, ?it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 139.15it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 1: Train Loss: 0.456715, Test Loss: 0.0028, Accuracy: 94.86%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 138.29it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 2: Train Loss: 0.157884, Test Loss: 0.0019, Accuracy: 96.28%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:07<00:00, 133.75it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 3: Train Loss: 0.125314, Test Loss: 0.0018, Accuracy: 96.28%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:05<00:00, 160.72it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 4: Train Loss: 0.109180, Test Loss: 0.0014, Accuracy: 97.20%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 155.73it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 5: Train Loss: 0.098976, Test Loss: 0.0013, Accuracy: 97.20%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:07<00:00, 129.73it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 6: Train Loss: 0.092522, Test Loss: 0.0014, Accuracy: 97.25%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:07<00:00, 133.35it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 7: Train Loss: 0.087164, Test Loss: 0.0013, Accuracy: 97.30%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 138.15it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 8: Train Loss: 0.083473, Test Loss: 0.0012, Accuracy: 97.60%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 150.00it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 9: Train Loss: 0.081005, Test Loss: 0.0012, Accuracy: 97.55%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 145.52it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 10: Train Loss: 0.078777, Test Loss: 0.0011, Accuracy: 97.56%\n"
     ]
    }
   ],
   "source": [
    "model_SimpleCNN = SimpleCNN()\n",
    "model_SimpleCNN.to(device)\n",
    "optimizer_SimpleCNN = optim.AdamW(model_SimpleCNN.parameters(), lr=1e-3, weight_decay=1e-4)\n",
    "scheduler_SimpleCNN = optim.lr_scheduler.ExponentialLR(optimizer_SimpleCNN, gamma=0.8)\n",
    "criterion_SimpleCNN = nn.CrossEntropyLoss()\n",
    "all_train_loss_SimpleCNN, all_test_loss_SimpleCNN, all_test_accuracy_SimpleCNN, all_test_precision_SimpleCNN, all_test_recall_SimpleCNN, all_test_f1_SimpleCNN = train_and_test_models(model_SimpleCNN, device, train_loader, test_loader, optimizer_SimpleCNN, criterion_SimpleCNN, epochs=10, scheduler=scheduler_SimpleCNN)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 138.79it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 1: Train Loss: 0.212059, Test Loss: 0.0009, Accuracy: 98.04%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 145.23it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 2: Train Loss: 0.060981, Test Loss: 0.0007, Accuracy: 98.43%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 143.25it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 3: Train Loss: 0.041337, Test Loss: 0.0007, Accuracy: 98.58%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 149.44it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 4: Train Loss: 0.031199, Test Loss: 0.0005, Accuracy: 98.84%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 145.90it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 5: Train Loss: 0.023523, Test Loss: 0.0004, Accuracy: 99.07%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 146.10it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 6: Train Loss: 0.018419, Test Loss: 0.0004, Accuracy: 99.06%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 148.70it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 7: Train Loss: 0.014136, Test Loss: 0.0004, Accuracy: 99.11%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 144.31it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 8: Train Loss: 0.011475, Test Loss: 0.0004, Accuracy: 99.04%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 146.35it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 9: Train Loss: 0.009289, Test Loss: 0.0004, Accuracy: 99.08%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:06<00:00, 151.34it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 10: Train Loss: 0.007622, Test Loss: 0.0004, Accuracy: 99.11%\n"
     ]
    },
    {
     "ename": "",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31mThe Kernel crashed while executing code in the current cell or a previous cell. \n",
      "\u001b[1;31mPlease review the code in the cell(s) to identify a possible cause of the failure. \n",
      "\u001b[1;31mClick <a href='https://aka.ms/vscodeJupyterKernelCrash'>here</a> for more info. \n",
      "\u001b[1;31mView Jupyter <a href='command:jupyter.viewOutput'>log</a> for further details."
     ]
    }
   ],
   "source": [
    "model_SimpleCNN_2 = SimpleCNN_2()\n",
    "model_SimpleCNN_2.to(device)\n",
    "optimizer_SimpleCNN_2 = optim.AdamW(model_SimpleCNN_2.parameters(), lr=1e-3, weight_decay=1e-4)\n",
    "scheduler_SimpleCNN_2 = optim.lr_scheduler.ExponentialLR(optimizer_SimpleCNN_2, gamma=0.8)\n",
    "criterion_SimpleCNN_2 = nn.CrossEntropyLoss()\n",
    "all_train_loss_SimpleCNN_2, all_test_loss_SimpleCNN_2, all_test_accuracy_SimpleCNN_2, all_test_precision_SimpleCNN_2, all_test_recall_SimpleCNN_2, all_test_f1_SimpleCNN_2 = train_and_test_models(model_SimpleCNN_2, device, train_loader, test_loader, optimizer_SimpleCNN_2, criterion_SimpleCNN_2, epochs=10, scheduler=scheduler_SimpleCNN_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:02<00:00, 381.63it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 1: Train Loss: 0.467948, Test Loss: 0.0051, Accuracy: 90.59%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:03<00:00, 291.06it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 2: Train Loss: 0.322768, Test Loss: 0.0048, Accuracy: 91.45%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:03<00:00, 284.28it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 3: Train Loss: 0.303115, Test Loss: 0.0048, Accuracy: 90.83%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:02<00:00, 379.59it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 4: Train Loss: 0.294402, Test Loss: 0.0048, Accuracy: 90.96%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:02<00:00, 399.77it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 5: Train Loss: 0.287786, Test Loss: 0.0044, Accuracy: 91.78%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:02<00:00, 397.78it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 6: Train Loss: 0.282731, Test Loss: 0.0044, Accuracy: 91.86%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:02<00:00, 404.85it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 7: Train Loss: 0.278986, Test Loss: 0.0044, Accuracy: 92.14%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:02<00:00, 392.49it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 8: Train Loss: 0.276028, Test Loss: 0.0044, Accuracy: 91.92%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:02<00:00, 393.90it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 9: Train Loss: 0.273699, Test Loss: 0.0043, Accuracy: 92.23%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:02<00:00, 405.71it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 10: Train Loss: 0.271893, Test Loss: 0.0043, Accuracy: 92.17%\n"
     ]
    }
   ],
   "source": [
    "model_SimpleLinear = SimpleLinear()\n",
    "model_SimpleLinear.to(device)\n",
    "optimizer_SimpleLinear = optim.AdamW(model_SimpleLinear.parameters(), lr=1e-3, weight_decay=1e-4)\n",
    "scheduler_SimpleLinear = optim.lr_scheduler.ExponentialLR(optimizer_SimpleLinear, gamma=0.8)\n",
    "criterion_SimpleLinear = nn.CrossEntropyLoss()\n",
    "all_train_loss_SimpleLinear, all_test_loss_SimpleLinear, all_test_accuracy_SimpleLinear, all_test_precision_SimpleLinear, all_test_recall_SimpleLinear, all_test_f1_SimpleLinear = train_and_test_models(model_SimpleLinear, device, train_loader, test_loader, optimizer_SimpleLinear, criterion_SimpleLinear, epochs=10, scheduler=scheduler_SimpleLinear)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  0%|          | 0/938 [00:00<?, ?it/s]"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:53<00:00,  8.29it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 1: Train Loss: 0.231797, Test Loss: 0.0007, Accuracy: 98.67%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:50<00:00,  8.53it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 2: Train Loss: 0.075593, Test Loss: 0.0005, Accuracy: 99.03%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:51<00:00,  8.44it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 3: Train Loss: 0.055778, Test Loss: 0.0004, Accuracy: 99.17%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:50<00:00,  8.49it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 4: Train Loss: 0.044149, Test Loss: 0.0004, Accuracy: 99.27%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:49<00:00,  8.53it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 5: Train Loss: 0.035306, Test Loss: 0.0003, Accuracy: 99.41%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:50<00:00,  8.52it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 6: Train Loss: 0.030881, Test Loss: 0.0003, Accuracy: 99.47%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:50<00:00,  8.52it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 7: Train Loss: 0.025763, Test Loss: 0.0003, Accuracy: 99.43%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:50<00:00,  8.51it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 8: Train Loss: 0.022853, Test Loss: 0.0003, Accuracy: 99.45%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:50<00:00,  8.49it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 9: Train Loss: 0.022020, Test Loss: 0.0003, Accuracy: 99.39%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [01:57<00:00,  7.95it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 10: Train Loss: 0.017954, Test Loss: 0.0002, Accuracy: 99.52%\n"
     ]
    }
   ],
   "source": [
    "model_ConvNet = ConvNet()\n",
    "model_ConvNet.to(device)\n",
    "optimizer_ConvNet = optim.AdamW(model_ConvNet.parameters(), lr=1e-3, weight_decay=1e-4)\n",
    "scheduler_ConvNet = optim.lr_scheduler.ExponentialLR(optimizer_ConvNet, gamma=0.8)\n",
    "criterion_ConvNet = nn.CrossEntropyLoss()\n",
    "all_train_loss_ConvNet, all_test_loss_ConvNet, all_test_accuracy_ConvNet, all_test_precision_ConvNet, all_test_recall_ConvNet, all_test_f1_ConvNet = train_and_test_models(model_ConvNet, device, train_loader, test_loader, optimizer_ConvNet, criterion_ConvNet, epochs=10, scheduler=scheduler_ConvNet)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Convolutional KAN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [07:53<00:00,  1.98it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 1: Train Loss: 0.308928, Test Loss: 0.0013, Accuracy: 97.65%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [11:16<00:00,  1.39it/s]   \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 2: Train Loss: 0.070050, Test Loss: 0.0010, Accuracy: 98.01%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [09:41<00:00,  1.61it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 3: Train Loss: 0.048763, Test Loss: 0.0007, Accuracy: 98.45%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [18:13<00:00,  1.17s/it]   \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 4: Train Loss: 0.037209, Test Loss: 0.0007, Accuracy: 98.44%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [18:54<00:00,  1.21s/it]    \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 5: Train Loss: 0.030337, Test Loss: 0.0007, Accuracy: 98.59%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [09:27<00:00,  1.65it/s]  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 6: Train Loss: 0.024907, Test Loss: 0.0006, Accuracy: 98.59%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [20:13<00:00,  1.29s/it]    \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 7: Train Loss: 0.021392, Test Loss: 0.0006, Accuracy: 98.61%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [38:37<00:00,  2.47s/it]    \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 8: Train Loss: 0.018570, Test Loss: 0.0006, Accuracy: 98.64%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [07:47<00:00,  2.01it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 9: Train Loss: 0.016519, Test Loss: 0.0006, Accuracy: 98.63%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [21:43<00:00,  1.39s/it]    \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 10: Train Loss: 0.015018, Test Loss: 0.0006, Accuracy: 98.69%\n"
     ]
    }
   ],
   "source": [
    "model_KKAN_Convolutional_Network = KKAN_Convolutional_Network(device = device)\n",
    "model_KKAN_Convolutional_Network.to(device)\n",
    "optimizer_KKAN_Convolutional_Network = optim.AdamW(model_KKAN_Convolutional_Network.parameters(), lr=1e-3, weight_decay=1e-4)\n",
    "scheduler_KKAN_Convolutional_Network = optim.lr_scheduler.ExponentialLR(optimizer_KKAN_Convolutional_Network, gamma=0.8)\n",
    "criterion_KKAN_Convolutional_Network = nn.CrossEntropyLoss()\n",
    "\n",
    "all_train_loss_KKAN_Convolutional_Network, all_test_loss_KKAN_Convolutional_Network, all_test_accuracy_KKAN_Convolutional_Network, all_test_precision_KKAN_Convolutional_Network, all_test_recall_KKAN_Convolutional_Network, all_test_f1_KKAN_Convolutional_Network = train_and_test_models(model_KKAN_Convolutional_Network, device, train_loader, test_loader, optimizer_KKAN_Convolutional_Network, criterion_KKAN_Convolutional_Network, epochs=10, scheduler=scheduler_KKAN_Convolutional_Network)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [07:40<00:00,  2.04it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 1: Train Loss: 0.226987, Test Loss: 0.0015, Accuracy: 96.82%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [07:45<00:00,  2.01it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 2: Train Loss: 0.075854, Test Loss: 0.0009, Accuracy: 98.19%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [17:51<00:00,  1.14s/it]  \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 3: Train Loss: 0.059013, Test Loss: 0.0010, Accuracy: 98.01%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [08:26<00:00,  1.85it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 4: Train Loss: 0.048931, Test Loss: 0.0009, Accuracy: 98.25%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [07:42<00:00,  2.03it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 5: Train Loss: 0.043789, Test Loss: 0.0008, Accuracy: 98.38%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [08:08<00:00,  1.92it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 6: Train Loss: 0.039049, Test Loss: 0.0008, Accuracy: 98.39%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [08:14<00:00,  1.90it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 7: Train Loss: 0.034960, Test Loss: 0.0008, Accuracy: 98.46%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [08:12<00:00,  1.91it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 8: Train Loss: 0.032509, Test Loss: 0.0008, Accuracy: 98.43%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [08:15<00:00,  1.89it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 9: Train Loss: 0.030009, Test Loss: 0.0008, Accuracy: 98.38%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [08:12<00:00,  1.91it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 10: Train Loss: 0.028154, Test Loss: 0.0008, Accuracy: 98.43%\n"
     ]
    }
   ],
   "source": [
    "model_KANC_MLP= KANC_MLP(device = device)\n",
    "model_KANC_MLP.to(device)\n",
    "optimizer_KANC_MLP = optim.AdamW(model_KANC_MLP.parameters(), lr=1e-3, weight_decay=1e-4)\n",
    "scheduler_KANC_MLP = optim.lr_scheduler.ExponentialLR(optimizer_KANC_MLP, gamma=0.8)\n",
    "criterion_KANC_MLP = nn.CrossEntropyLoss()\n",
    "\n",
    "all_train_loss_KANC_MLP, all_test_loss_KANC_MLP, all_test_accuracy_KANC_MLP, all_test_precision_KANC_MLP, all_test_recall_KANC_MLP, all_test_f1_KANC_MLP = train_and_test_models(model_KANC_MLP, device, train_loader, test_loader, optimizer_KANC_MLP, criterion_KANC_MLP, epochs=10, scheduler=scheduler_KANC_MLP)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:13<00:00, 68.31it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 1: Train Loss: 0.410440, Test Loss: 0.0022, Accuracy: 95.80%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:12<00:00, 72.91it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 2: Train Loss: 0.126325, Test Loss: 0.0016, Accuracy: 96.91%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:13<00:00, 71.20it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 3: Train Loss: 0.093404, Test Loss: 0.0013, Accuracy: 97.49%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:13<00:00, 69.15it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 4: Train Loss: 0.078819, Test Loss: 0.0011, Accuracy: 97.64%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:13<00:00, 67.88it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 5: Train Loss: 0.070114, Test Loss: 0.0011, Accuracy: 97.72%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:13<00:00, 70.54it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 6: Train Loss: 0.063962, Test Loss: 0.0010, Accuracy: 97.83%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:13<00:00, 71.56it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 7: Train Loss: 0.059733, Test Loss: 0.0010, Accuracy: 97.80%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:13<00:00, 70.48it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 8: Train Loss: 0.056522, Test Loss: 0.0009, Accuracy: 97.97%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:13<00:00, 70.50it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 9: Train Loss: 0.054087, Test Loss: 0.0009, Accuracy: 97.84%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 938/938 [00:13<00:00, 70.79it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End of Epoch 10: Train Loss: 0.052381, Test Loss: 0.0009, Accuracy: 97.98%\n"
     ]
    }
   ],
   "source": [
    "model_Convs_and_KAN= NormalConvsKAN()\n",
    "model_Convs_and_KAN.to(device)\n",
    "optimizer_Convs_and_KAN = optim.AdamW(model_Convs_and_KAN.parameters(), lr=1e-3, weight_decay=1e-4)\n",
    "scheduler_Convs_and_KAN = optim.lr_scheduler.ExponentialLR(optimizer_Convs_and_KAN, gamma=0.8)\n",
    "criterion_Convs_and_KAN = nn.CrossEntropyLoss()\n",
    "\n",
    "all_train_loss_Convs_and_KAN, all_test_loss_Convs_and_KAN, all_test_accuracy_Convs_and_KAN, all_test_precision_Convs_and_KAN, all_test_recall_Convs_and_KAN, all_test_f1_Convs_and_KAN = train_and_test_models(model_Convs_and_KAN, device, train_loader, test_loader, optimizer_Convs_and_KAN, criterion_Convs_and_KAN, epochs=10, scheduler=scheduler_Convs_and_KAN)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABjUAAAHqCAYAAABMTMx9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVxN+f8H8Ne97Tvti2ghZcu+RRgRWYqxMykmM5axZCxRURhjKTW2MLYx9uzDpDR2TbZhGGQXaRESpVT3/P7o2/25KqLlFq/n43Efup/zOefzPud+mjmn9/18PiJBEAQQERERERERERERERFVcmJ5B0BERERERERERERERFQSTGoQEREREREREREREVGVwKQGERERERERERERERFVCUxqEBERERERERERERFRlcCkBhERERERERERERERVQlMahARERERERERERERUZXApAYREREREREREREREVUJTGoQEREREREREREREVGVwKQGERERERERERERERFVCUxqEBERVXGzZ8+GSCRCamqqvEMhIiIiorccO3YMIpEI4eHh8g6lRJKTk9GvXz/o6elBJBIhJCRE3iEREREVwqQGEVElsGHDBohEIpw/f17eoRTp/v37EIlEJXrdv3+/1O09fvwYs2fPxqVLl0p9rLJQkDQo7pWUlCTvEImIiIi+WAX30qqqqkhISCi0vWPHjmjQoIEcIqt6Jk2ahMOHD8PHxwebNm1Ct27diq379v2wWCyGqakpunbtimPHjlVcwHKQmZmJ2bNnf/bn+T5Tp06FSCTCwIED5R0KEX2hFOUdABERVX4GBgbYtGmTTFlQUBAePXqEJUuWFKpbWo8fP0ZAQAAsLCzQuHHjUh+vrKxcuRKampqFyqtVq1bxwRARERGRjOzsbPz8889YunSpvEOpsv766y+4urrixx9/LFH9Ll26wN3dHYIg4N69e1ixYgW++uorHDx4EN27dy/naOUjMzMTAQEBAPITZl8aQRCwdetWWFhY4MCBA3j58iW0tLTkHRYRfWGY1CAiog/S0NDAsGHDZMq2bduG58+fFyr/nPXr1w/6+vryDoOIiIiIitC4cWOsWbMGPj4+MDU1lXc4FSojIwMaGhqlPk5KSspHfWHHxsZG5nmgT58+aNSoEUJCQkqd1Circ6oqqsr5Hjt2DI8ePcJff/0FZ2dn7N69G8OH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yjuEIo0bNw7jxo0rctuxY8dk3nfo0AHXrl177/G0tLQQEhKCkJCQMorw82JnZ4e6desiPj4eL1++hJaWFmrWrMkRGkRERERUJuSa1PiUhfuMjY3fW7/g3+TkZJiYmMjUady4MQDgr7/+QkxMTKGF+po3b46hQ4di48aNhdr18fGBt7e39H16ejrMzc3RtWvXD84bWx5ycnIQFRWFLl26cOEa+mjsP1Qa7D9UGuw/VBrsP5Xf29/Mpy+bWCyGhYWFvMMgIiIios+QXJMaby/c5+bmBuD/F+4r7ptUbdq0QXR0NCZOnCgti4qKki70Z2lpCWNjY0RHR0uTGOnp6YiNjcXo0aMBAL/88gvmzp0r3f/x48dwdnbG9u3b0apVqyLbVVFRKZQEAfJXZJfnQ7W826eqjf2HSoP9h0qD/YdKg/2n8uLnQkRERERE5U3u0095e3tj+PDhaN68OVq2bImQkJBCC/eZmZlh/vz5AIAJEyagQ4cOCAoKQo8ePbBt2zacP38eq1evBgCIRCJMnDgRc+fORZ06dWBpaQk/Pz+YmppKEyc1a9aUiUFTUxMAYG1tjRo1alTQmRMRERERERERERER0ceQe1LjYxfua9u2LbZs2QJfX1/MmDEDderUwd69e9GgQQNpnalTpyIjIwOjRo1CWloa2rVrh4iICKiqqlb4+RERERERERERERERUdmQe1ID+LiF+wCgf//+6N+/f7HHE4lECAwMRGBgYInat7CwgCAIJapLRERERERERERERETyIf5wFSIiIiIiIiIiIiIiIvljUoOIiIiIiIiIiIiIiKoEJjWIiIiIiIiIiIiIiKhKYFKDiIiIiIiIiIiIiIiqhEqxUDgRERERERFVoFOngKQkwMQEaN8eUFCQd0RERERERCXCpAYREREREdGX4sCB/ARGjx7A69f5ZTVqAKGhQN++8o2NiIiIiKgEOP0UERERERHRl2D3buCbbwqXJyQA/frlbyciIiIiquSY1CAiIiIiIvrc5eUBEyYAglB4W0HZxIn59YiIiIiIKjEmNYiIiIiIiD53J08Cjx4Vv10QgIcP8+sREREREVViTGoQERERERF97hITy7YeEREREZGcMKlBRERERET0uTMxKdt6RERERERywqQGERERERHR5659e6BGDUAkKnq7SASYm+fXIyIiIiKqxJjUICIiIiIi+twpKAChoUVvK0h0hITk1yMiIiIiqsQU5R0AERERERERVYC+fYsur1EjP6FR3HYiIiIiokqESQ0iIiIiIqIvRa9ewKFDwMGDQFJS/hoa7dtzhAYRERERVRlMahAREREREX1p2rUDlJTkHQURERER0UfjmhpERERERERERERERFQlMKlBRERERERERERERERVApMaRERERERERERERERUJXBNDSIiIvri5OXlIScnR95h0EfKycmBoqIisrKykJeXJ+9wvkhKSkpQ4ILSREREREQkR0xqEBER0RdDEAQkJSUhLS1N3qHQJxAEAcbGxnj48CFEIpG8w/liVatWDcbGxvwMiIiIiIhILpjUICIioi9GQULD0NAQ6urq/KNsFSORSPDq1StoampCLOYsqhVNEARkZmYiJSUFAGBiYiLniIiIiIiI6EvEpAYRERF9EfLy8qQJDT09PXmHQ59AIpHgzZs3UFVVZVJDTtTU1AAAKSkpMDQ05FRURERERERU4fg0SERERF+EgjU01NXV5RwJUdVW8DvEdWmIiIiIiEgemNQgIiKiLwqnnCIqHf4OERERERGRPDGpQUREREREREREREREVQKTGkRERERE7+Ho6IgtW7bIOwzcv38fIpEIly5dAgAcO3YMIpEIaWlpAICIiAg0btwYEolEfkESERERERGVMyY1iIiIiCo5Dw8PuLm5yTsMqaNHj8LFxQV6enpQV1dHvXr1MHnyZCQkJFRoHB07doRIJMK2bdtkykNCQmBhYfFRxxKJRNi7d2+h8v379yM5ORmDBg2Sll2+fBm9e/eGoaEhVFVVYWFhgYEDByIlJeVTTqPMdOvWDUpKSti8ebNc4yAiIiIiIipPTGoQERERUYmtWrUKTk5OMDY2xq5du3Dt2jWEhYXhxYsXCAoKqvB4VFVV4evrW26LVv/yyy/w9PSEWJx/2/zkyRN07twZurq6OHz4MK5fv47169fD1NQUGRkZ5RLDx/Dw8MAvv/wi7zCIiIiIiIjKDZMaRERERFXc8ePH0bJlS6ioqMDExATTp09Hbm6udHt4eDgaNmwINTU16OnpwcnJSfoH+GPHjqFly5bQ0NBAtWrV4ODggAcPHhTZzqNHjzB+/HiMHz8e69atQ8eOHWFhYQFHR0f8+uuv8Pf3l9bdtWsX6tevDxUVFVhYWBRKeFhYWOCnn37CiBEjoKWl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i9CsWTN06tQJH3zwAY4fP45PP/3ULucBAM2bN4dOp8OaNWvwwAMPlLlweUktWrTAxx9/jG7dukGr1WLOnDk2jzIvy8KFCzFs2DCEh4dj9OjRUCgUOHHiBE6dOoV///vfAGD60lefPn3g4uICX19fm7Yr7Xi8ViKi2oIjNYiIqMbEx8cjKCjILN19992m8iVLlmDTpk3o0KEDPvroI3z22Wemb1i5u7vju+++w+3bt9G9e3eMHj0agwYNwttvv23afsKECVi1ahXeffddtG3bFsOGDcP58+dtbp9Go8H8+fPRoUMH9OvXD0qlEps2bbLfG0BERERE5ABLly61mB4qKioK7777Lt555x107NgRv/zyS5XW3ihpxYoVWLFiBTp27IgDBw5g27Ztpi8zGUdX6PV63HfffWjfvj1mzpwJHx+fckcLlDR9+nTMmjULs2fPRvv27REfH49t27ahRYsWdjuXjh074o033sArr7yCdu3a4dNPP8Xy5ctt2jYuLg5paWno0qULHn/8cUyfPh3+/v5VblN0dDS2b9+O77//Ht27d8ddd92FN998E02aNDHVWblyJXbt2oWwsDB07tzZ5u2s4bUSEdUmkig5gSIREZEDSJKEr776CiNGjHB0U4iIiIiIiIiIqJbiSA0iIiIiIiIiIiIiInIKDGoQEREREREREREREZFT4ELhRERUK3A2RCIiIiIiIiIiKg9HahARERERERERERERkVNgUIOIiIiIiIiIiIiIiJwCgxpEREREREREREREROQUGNQgIiIiIiIiIiIiIiKnwKAGERERERERERERERE5BQY1iIiIiIiIiIiIiIjIKTCoQUREREREREREREREToFBDSIiIiIiIiIiIiIicgoMahARERERERERERERkVP4fzTmgyF4f4R1AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1600x500 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def count_parameters(model):\n",
    "    return sum(p.numel() for p in model.parameters() if p.requires_grad)\n",
    "\n",
    "fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 5))  \n",
    "\n",
    "ax1.plot(all_test_loss_SimpleCNN, label='Loss ConvNet(Small)', color='red')\n",
    "ax1.plot(all_test_loss_SimpleLinear, label='Loss 1 Layer & MLP', color='green')\n",
    "ax1.plot(all_test_loss_SimpleCNN_2, label='Loss ConvNet(Medium)', color='yellow')\n",
    "ax1.plot(all_test_loss_ConvNet, label='Loss ConvNet (Big)', color='purple')\n",
    "ax1.plot(all_test_loss_KANC_MLP, label='Loss KANConv & MLP', color='blue')\n",
    "ax1.plot(all_test_loss_Convs_and_KAN, label='Loss Conv & KAN', color='gray')\n",
    "ax1.plot(all_test_loss_KKAN_Convolutional_Network, label='Loss KKAN', color='orange')\n",
    "\n",
    "ax1.set_title('Loss Test vs Epochs')\n",
    "ax1.set_xlabel('Epochs')\n",
    "ax1.set_ylabel('Loss')\n",
    "ax1.legend()\n",
    "ax1.grid(True)\n",
    "\n",
    "ax2.scatter(count_parameters(model_SimpleCNN), max(all_test_accuracy_SimpleCNN), color='red', label='ConvNet (Small)')\n",
    "ax2.scatter(count_parameters(model_SimpleLinear), max(all_test_accuracy_SimpleLinear), color='green', label='1 Layer MLP')\n",
    "ax2.scatter(count_parameters(model_SimpleCNN_2), max(all_test_accuracy_SimpleCNN_2), color='yellow', label='ConvNet (Medium)')\n",
    "ax2.scatter(count_parameters(model_ConvNet), max(all_test_accuracy_ConvNet), color='purple', label='ConvNet (Big)')\n",
    "ax2.scatter(count_parameters(model_KANC_MLP), max(all_test_accuracy_KANC_MLP), color='blue', label='KANConv & MLP')\n",
    "ax2.scatter(count_parameters(model_Convs_and_KAN), max(all_test_accuracy_Convs_and_KAN), color='grey', label='Convs & KAN')\n",
    "ax2.scatter(count_parameters(model_KKAN_Convolutional_Network), max(all_test_accuracy_KKAN_Convolutional_Network), color='orange', label='KKAN')\n",
    "\n",
    "ax2.set_title('Number of Parameters vs Accuracy')\n",
    "ax2.set_xlabel('Number of Parameters')\n",
    "ax2.set_ylabel('Accuracy (%)')\n",
    "ax2.legend() \n",
    "ax2.grid(True)\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def highlight_max(s):\n",
    "    is_max = s == s.max()\n",
    "    return ['font-weight: bold' if v else '' for v in is_max]\n",
    "\n",
    "# Listas para acumular datos\n",
    "accs = []\n",
    "precision = []\n",
    "recall = []\n",
    "f1s = []\n",
    "params_counts = []\n",
    "\n",
    "# Modelos y sus métricas correspondientes\n",
    "models = [model_SimpleLinear, model_SimpleCNN,model_SimpleCNN_2, model_ConvNet, model_KANC_MLP, model_Convs_and_KAN, model_KKAN_Convolutional_Network]\n",
    "# all_accuracys = [all_test_accuracy_SimpleLinear, all_test_accuracy_SimpleCNN, all_test_accuracy_ConvNet, all_test_accuracy_KANC_MLP, all_test_accuracy_Convs_and_KAN, all_test_accuracy_KKAN_Convolutional_Network]\n",
    "# all_precision = [all_test_precision_SimpleLinear, all_test_precision_SimpleCNN, all_test_precision_ConvNet, all_test_precision_KANC_MLP, all_test_precision_Convs_and_KAN, all_test_precision_KKAN_Convolutional_Network]\n",
    "# all_recall = [all_test_recall_SimpleLinear, all_test_recall_SimpleCNN, all_test_recall_ConvNet, all_test_recall_KANC_MLP, all_test_recall_Convs_and_KAN, all_test_recall_KKAN_Convolutional_Network]\n",
    "# all_f1s = [all_test_f1_SimpleLinear, all_test_f1_SimpleCNN, all_test_f1_ConvNet, all_test_f1_KANC_MLP, all_test_f1_Convs_and_KAN, all_test_f1_KKAN_Convolutional_Network]\n",
    "\n",
    "\n",
    "# Recopilación de datos\n",
    "for i, m in enumerate(models):\n",
    "    index = np.argmax(m.all_test_accuracy)\n",
    "    params_counts.append(count_parameters(m))\n",
    "    accs.append(m.all_test_accuracy[index])\n",
    "    precision.append(m.all_test_precision[index])\n",
    "    recall.append(m.all_test_recall[index])\n",
    "    f1s.append(m.all_test_f1[index])\n",
    "\n",
    "# Creación del DataFrame\n",
    "df = pd.DataFrame({\n",
    "    \"Test Accuracy\": accs,\n",
    "    \"Test Precision\": precision,\n",
    "    \"Test Recall\": recall,\n",
    "    \"Test F1 Score\": f1s,\n",
    "    \"Number of Parameters\": params_counts\n",
    "}, index=[\"1 Layer MLP\", \"ConvNet (Small)\",\"ConvNet (Medium)\", \"ConvNet (Big)\", \"KANConv & MLP\", \"Simple Conv & KAN\", \"KKAN\"])\n",
    "\n",
    "df.to_csv('experiment_28x28.csv', index=False)\n",
    "\n",
    "# Aplicando el estilo\n",
    "df_styled = df.style.apply(highlight_max, subset=df.columns[:], axis=0).format('{:.3f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style type=\"text/css\">\n",
       "#T_811a2_row3_col0, #T_811a2_row3_col1, #T_811a2_row3_col2, #T_811a2_row3_col3, #T_811a2_row3_col4 {\n",
       "  font-weight: bold;\n",
       "}\n",
       "</style>\n",
       "<table id=\"T_811a2\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th class=\"blank level0\" >&nbsp;</th>\n",
       "      <th id=\"T_811a2_level0_col0\" class=\"col_heading level0 col0\" >Test Accuracy</th>\n",
       "      <th id=\"T_811a2_level0_col1\" class=\"col_heading level0 col1\" >Test Precision</th>\n",
       "      <th id=\"T_811a2_level0_col2\" class=\"col_heading level0 col2\" >Test Recall</th>\n",
       "      <th id=\"T_811a2_level0_col3\" class=\"col_heading level0 col3\" >Test F1 Score</th>\n",
       "      <th id=\"T_811a2_level0_col4\" class=\"col_heading level0 col4\" >Number of Parameters</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th id=\"T_811a2_level0_row0\" class=\"row_heading level0 row0\" >1 Layer MLP</th>\n",
       "      <td id=\"T_811a2_row0_col0\" class=\"data row0 col0\" >0.922</td>\n",
       "      <td id=\"T_811a2_row0_col1\" class=\"data row0 col1\" >0.922</td>\n",
       "      <td id=\"T_811a2_row0_col2\" class=\"data row0 col2\" >0.921</td>\n",
       "      <td id=\"T_811a2_row0_col3\" class=\"data row0 col3\" >0.921</td>\n",
       "      <td id=\"T_811a2_row0_col4\" class=\"data row0 col4\" >7850.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_811a2_level0_row1\" class=\"row_heading level0 row1\" >ConvNet (Small)</th>\n",
       "      <td id=\"T_811a2_row1_col0\" class=\"data row1 col0\" >0.976</td>\n",
       "      <td id=\"T_811a2_row1_col1\" class=\"data row1 col1\" >0.976</td>\n",
       "      <td id=\"T_811a2_row1_col2\" class=\"data row1 col2\" >0.976</td>\n",
       "      <td id=\"T_811a2_row1_col3\" class=\"data row1 col3\" >0.976</td>\n",
       "      <td id=\"T_811a2_row1_col4\" class=\"data row1 col4\" >2740.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_811a2_level0_row2\" class=\"row_heading level0 row2\" >ConvNet (Medium)</th>\n",
       "      <td id=\"T_811a2_row2_col0\" class=\"data row2 col0\" >0.991</td>\n",
       "      <td id=\"T_811a2_row2_col1\" class=\"data row2 col1\" >0.991</td>\n",
       "      <td id=\"T_811a2_row2_col2\" class=\"data row2 col2\" >0.991</td>\n",
       "      <td id=\"T_811a2_row2_col3\" class=\"data row2 col3\" >0.991</td>\n",
       "      <td id=\"T_811a2_row2_col4\" class=\"data row2 col4\" >157030.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_811a2_level0_row3\" class=\"row_heading level0 row3\" >ConvNet (Big)</th>\n",
       "      <td id=\"T_811a2_row3_col0\" class=\"data row3 col0\" >0.995</td>\n",
       "      <td id=\"T_811a2_row3_col1\" class=\"data row3 col1\" >0.995</td>\n",
       "      <td id=\"T_811a2_row3_col2\" class=\"data row3 col2\" >0.995</td>\n",
       "      <td id=\"T_811a2_row3_col3\" class=\"data row3 col3\" >0.995</td>\n",
       "      <td id=\"T_811a2_row3_col4\" class=\"data row3 col4\" >887530.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_811a2_level0_row4\" class=\"row_heading level0 row4\" >KANConv & MLP</th>\n",
       "      <td id=\"T_811a2_row4_col0\" class=\"data row4 col0\" >0.985</td>\n",
       "      <td id=\"T_811a2_row4_col1\" class=\"data row4 col1\" >0.985</td>\n",
       "      <td id=\"T_811a2_row4_col2\" class=\"data row4 col2\" >0.984</td>\n",
       "      <td id=\"T_811a2_row4_col3\" class=\"data row4 col3\" >0.984</td>\n",
       "      <td id=\"T_811a2_row4_col4\" class=\"data row4 col4\" >163726.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_811a2_level0_row5\" class=\"row_heading level0 row5\" >Simple Conv & KAN</th>\n",
       "      <td id=\"T_811a2_row5_col0\" class=\"data row5 col0\" >0.980</td>\n",
       "      <td id=\"T_811a2_row5_col1\" class=\"data row5 col1\" >0.980</td>\n",
       "      <td id=\"T_811a2_row5_col2\" class=\"data row5 col2\" >0.980</td>\n",
       "      <td id=\"T_811a2_row5_col3\" class=\"data row5 col3\" >0.980</td>\n",
       "      <td id=\"T_811a2_row5_col4\" class=\"data row5 col4\" >37030.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th id=\"T_811a2_level0_row6\" class=\"row_heading level0 row6\" >KKAN</th>\n",
       "      <td id=\"T_811a2_row6_col0\" class=\"data row6 col0\" >0.987</td>\n",
       "      <td id=\"T_811a2_row6_col1\" class=\"data row6 col1\" >0.987</td>\n",
       "      <td id=\"T_811a2_row6_col2\" class=\"data row6 col2\" >0.987</td>\n",
       "      <td id=\"T_811a2_row6_col3\" class=\"data row6 col3\" >0.987</td>\n",
       "      <td id=\"T_811a2_row6_col4\" class=\"data row6 col4\" >94650.000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x3174c5c70>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_styled"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "ckan",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.18"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
